# 先创建一个 mysql的操作对象
import time

from utils.mysqlutil import MysqlUtil

# 前提： 借助sql 工具类
mysql = MysqlUtil()


# 需求：
class RdTestCase:
    # 01， 根据 web 项目的名字，来选择相应的测试用例
    def load_all_case(self, web):
        sql = f'select * from jwtest_case_list where web="{web}"'
        return mysql.get_fetchall(sql)

    # 02， 根据 isdel 这个字段，来选择要测的测试用例，---> 测试集（ 套件）
    def is_run_data(self, web):
        suite = []      # 新的测试集
        # 获得所有的用例--列表
        all_case = self.load_all_case(web)
        # 循环判断 用例里 isdel 字段 是否是 1
        for case in all_case:
            if case['isdel'] == 1:
                # 放到新的测试集中
                suite.append(case)
        # 返回新的测试集
        return suite

    # 03， 根据 web 项目的名字和一些关键字，来选择config 的信息--- host 地址
    def loadConfKey(self, web, key):
        # 获取该记录
        # sql 语句
        sql = f'select * from jwtest_config where web="{web}" and key1="{key}";'
        # 调用mysql 的方法
        return mysql.get_fetchone(sql)

    # 04， 将测试结果，包含4个字段 用例id, 时间，响应内容，测试结果，写入到数据库中
    def updateResults(self, case_id, response, result):
        # 测试结果写入的时间， 从时间模块的方法来获取
        times = time.strftime('%Y_%m_%d %H:%M:%S')
        # sql 语句
        sql = f'''insert into jwtest_result_record(case_id, times, response, result)
        values("{case_id}", "{times}", "{response}", "{result}")
        '''
        # 执行该sql 语句
        mysql.sql_execute(sql)


if __name__ == '__main__':
    rd = RdTestCase()

    # 写入结果到 jwtest_result_recor 表中：
    rd.updateResults('4565', {'success': True,'message': '用户名和密码都不能为空'}, "True")

    # print(rd.load_all_case("okr-api"))
    # print(rd.is_run_data("okr-api"))
    # print(rd.loadConfKey("atstudy_okr", "url_api"))
    # 主机地址：
    # print(rd.loadConfKey("atstudy_okr", "url_api")['value'])

